#pragma once

#include<vector>
#include <string>
#include "opencv2/core/core.hpp"

#include "json.hpp"
#include "sdc.h"
#include "cache.hpp"
#include "lru_cache_policy.hpp"
#include <SQLiteCpp/SQLiteCpp.h>
#include <SQLiteCpp/VariadicBind.h>

#include "inout_track.h"
#include "hw_app_log.h"
#include "hw_cv_type.h"
#include "types.h"

using namespace std;

namespace gc
{
    class IllegalParkingTrack : public InoutTrack
    {
        public:
        	IllegalParkingTrack(std::string camera_key, int track_id);
	        virtual ~IllegalParkingTrack(void);

            bool AddTrackObj(GCTrackObj &trackObj);
            void update(bool hasNewTrackObj);
            void End();

        private:
            void getPlate();
            void getInoutTime();
            void getProofImgs();
            void getStateImgs();
            void getBerth();
            void drawDebugInfo();

            void saveDB();
            void upload();

    };
}